/**
 * @author VernHe
 * @date 2021年05月13日 13:09
 */
public class Solution_055 {
    public boolean canJump(int[] nums) {
        int n = nums.length;
        if (nums == null || n == 0) {
            return false;
        }
        // 能到达的最远位置
        int rightmost = 0;
        int end = n - 1;
        for (int i = 0; i < n; i++) {
            if (i <= rightmost) {
                // 如果此时i位置可以到达，就尝试更新rightmost
                rightmost = Math.max(rightmost,i + nums[i]);
                if (rightmost >= end) {
                    return true;
                }
            }

        }
        return false;
    }
}
